<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 1.JS延迟加载的方式有哪些？（5）
         // script标签defer属性
        // 脚本代码写在body标签之后

        // 2.前端 JavaScript 中的 ECMAScript、DOM、BOM 的含义；
        // ECMAScript ------ javascript的核心，规定了js的语法规范
        // DOM     文档对象模型(提供与网页内容交互的方法和接口)
        // BOM     浏览器对象模型(提供与浏览器交互的方法和接口)
        // 3.JavaScript 的数据类型有哪些？
          // 基本数据类型
        //     String、Number、Boolean、Null、Undefined、Symbol
        // 引用数据类型
        //     Object、Array、Function
        // 4.如何进行数据类型的判断？
     // typeof
        // instanceof 
        // Object.prototype.toString.call()

        // 5.null 和 undefined 的区别？什么时候会得到 undefined？
        // undefined
        //     声明变量未加以初始化就会返回undefeated值, 表示空值

        // null
        //     表示空值， 空对象(不存在的对象)

        // 6.如何理解 null == undefined 返回 true，null === undefined 返回 false？

         // null == undefined
        // 判断值, 两者都是空值

        // null === undefined
        // 判断值和数据类型

        // 7.使用 continue 或 break 终止循环时，两种方式的区别是？
         // continue      
        //     跳出当前符合条件的流程，继续下一个流程  

        // break
        //     终止整个循环(流程)


        // 8.如何判断字符串内是否包含指定字符？
          // indexOf
        // lastIndexOf
        // includes

        // 9.请尽量列举出数组的方法，并且注明哪些方法会修改原数组，哪些不会；
  //     reverse
        //     splice
        //     push
        //     pop
        //     unshift
        //     shift
        //     sort    

        // 不修改原数组
        //     slice
        //     concat
        //     join    
        //     indexOf
        //     lastIndexOf

        // 10. var、let、const 区别？
        //var定义的变量，没有块的概念，可以跨块访问, 不能跨函数访问。
        // let定义的变量，只能在块作用域里访问，不能跨块访问，也不能跨函数访问。
        // const用来定义常量，使用时必须赋值，只能在块作用域里访问，而且不能修改。

        // 12. 如何在 DOM2 级事件绑定上传递参数？
        // 通过attanchEvent绑定事件

        // 13. 怎么阻止事件的进一步传播和默认事件？

        // 14. 如何添加一个一次性事件？

        // 15. 同步和异步的区别?
        // 同步:所有的操作都做完，才返回给用户。
        // 异步：不用等所有操作都做完，就相应用户请求。

        // 16. AJAX是什么？AJAX是如何为页面注入灵魂？
        // AJAX是执行异步网络请求, 是一种创建动态网页技术


        // 17. 开发阶段的 AJAX 跨域有哪些解决方法，jsonp 的原理是什么、
        // 代理、JSONP

        // 18. 请描述一下cookies，sessionStorage和localStorage的区别
        // cookie:可以设置cookie过期时间,限制大小为4kb左右, 超出部分会被裁切
        // sessionStorage: 用于保存临时同一个窗口的数据, 关闭窗口之后数据就会被删除
        // localStorage:用于长久保留整个网页的数据, 保存的数据没有过期时间, 直到手动去除浏览器缓存


        // 19. 讲一下常见的异步场景，以及传统异步的诟病和解决方案
        // Promise
        // Async await

        // 20. 数组如何实现去重？请提供至少2种方法
        // indexOf
        // filter
     
        // 21. 讲一下对基本数据类型 和 复杂/引用数据类型的理解？

        // 基本类型：简单数据类型是不能简化的、内置的数据类型、由编程语言本身定义，它表示了真实的数字、字符和整数。

        // 引用数据类型：它的复合数据类型一般都是通过类或接口进行构造，类提供了捆绑数据和方法的方式，同时可以针对程序外部进行信息隐藏。


        // 22. this 的指向如何确定
        //函数（方法）内
        // 一种以函数的方式调用（不带.）this指向window
        // 一种以方法的形式调用（函数名前面带.）this指向点前面的

        // 函数（方法）外，this指向window

        // 23. 谈谈对垃圾回收机制的认识

        // 在系统运行过程中会产生一些无用的对象,这些对象一直占用内存,不清理这些无用的对象可能会导致内存耗尽,所有垃圾回收机制的是内存.

        // 24. 什么是回流重绘，如何进行优化？
        
        // 回流：节点的几何属性或者布局发生改变被称为回流
        // 重绘：节点的样式改变且不影响布局的，比如color，visibility等，称为重绘
        // offsetTop、offsetLeft、offsetWidth、offsetHeight

        // 25. 请解释什么是事件代理
        // 事件代理的实现原理是利用冒泡和目标元素, 把处理的事件添加到父元素, 等待子元素事件的冒泡, 并且可以通过父元素event.target判断哪个是子元素, 从而做出处理

        // 26. 谈谈你对渐进增强和优雅降级的理解(补充)
        
    </script>
</body>

</html>